package com.kaifamiao.map;

import java.util.Hashtable;

/**
 * 1、将 键值对 添加到 Hashtable 中时，会根据 键 的 hashCode 来确定 键值对 的存放位置
 *          int index = ( key.hashCode() & 0x7FFFFFFF ) % tab.length;
 * 2、在 Hashtable 内部借助于 数组 + 链表 来存储 键值对
 * 3、Hashtable 的直接父类是 Dictionary类
 * 4、Hashtable 中的 键 和 值 都不能为 null
 * 5、Hashtable 是 线程安全 的
 */
public class AnalyseHashtable {

    public static void main(String[] args) {

        int cap = 16;
        Hashtable<String,Integer> h = new Hashtable<>(cap);

        h.put( "李芳", 1 );
        h.put( "农丰", 5 );
        h.put( "儿女", 2 );

        System.out.println( h );

        System.out.println( "李芳".hashCode() );
        System.out.println( ( "李芳".hashCode() & 0x7FFFFFFF ) % cap );

        System.out.println( "农丰".hashCode() );
        System.out.println( ( "农丰".hashCode() & 0x7FFFFFFF ) % cap );

        System.out.println( "儿女".hashCode() );
        System.out.println( ( "儿女".hashCode() & 0x7FFFFFFF ) % cap );

    }

}
